package tech.aistar.day02;

/**
 * 本类用来演示: 交换俩个变量的数据 - 笔试题
 *
 * @author: success
 * @date: 2021/3/5 10:43 上午
 */
public class SwapVarDemo {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;

        //使用第三方变量
        int  temp = a;
        a = b;
        b = temp;
        System.out.println(a);
        System.out.println(b);

        //要求 - 但是不允许出现第三方变量
        //^特性 - 一个数连续异或同一个数俩次,结果是它本身
        int x = 10;
        int y = 20;
        x = x ^ y;//x = 10 ^ 20
        y = x ^ y;//y = 10 ^ 20 ^ 20 = 10
        x = x ^ y;//x = 10 ^ 20 ^ 10 = 20
        System.out.println(x);
        System.out.println(y);

        System.out.println("===");

        //天才写法
        int m = 10;
        int n = 20;
        //n = 10^20^20 = 10
        n = m^(m=n)^n;

        System.out.println(m);//20
        System.out.println(n);//10

        System.out.println(~9);//-10

        //请你用最高性能的方式计算出3的三次方
        // 00001000
        System.out.println(2 << 2);//8

        System.out.println(-10 >>> 2);

        System.out.println(-10 >> 2);
    }
}
